#include <iostream>
#include <chrono>
#include "threadpoll.hpp" 

// 一个简单的任务函数，用于测试
void printTask(int id) {
    std::cout << "Task " << id << " is running on thread " 
              << std::this_thread::get_id() << std::endl;
    std::this_thread::sleep_for(std::chrono::milliseconds(500)); // 模拟耗时任务
    std::cout << "Task " << id << " finished" << std::endl;
}

void testThreadPool() {
    // 创建一个线程池，指定 4 个工作线程
    ThreadPool pool(4);

    // 添加几个简单的任务
    std::cout << "Adding tasks to thread pool..." << std::endl;
    for (int i = 1; i <= 6; i++) {
        pool.AddTask([i]() { printTask(i); }); // 使用 lambda 捕获 i
    }

    // 添加一个使用 std::bind 的任务
    auto boundTask = std::bind(printTask, 7);
    pool.AddTask(boundTask);

    // 主线程等待一段时间，确保所有任务执行完成
    std::cout << "Main thread waiting for tasks to complete..." << std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(4));

    std::cout << "Test finished, thread pool will be destroyed." << std::endl;
    // ThreadPool 的析构函数会自动清理
}

int main() {
    testThreadPool();
    return 0;
}